BigQueryからBrazeにユーザーデータを自動連携で取り込む #Cloud Data Ingestion
Brazeブロガーの國崎です。
今回はBrazeのCloud Data Ingestionを使ってBigQueryにあるデータをBrazeに流し込むということをやってみましたので、その手順をご紹介します。
前提条件
- Google Cloudのプロジェクト設定は完了している
- BrazeのCloud Data Ingestion for BigQueryが使える状態である
この記事を執筆している2023年8月時点でCloud Data Ingestion for BigQueryはEARLY ACCESSとなっています。
機能として使えない方はBrazeアカウントマネージャーまたはCSMにお問い合わせください。
BigQueryでの作業
まず始めにBigQueryでやる作業についてお伝えします。
テーブルを設定する
以下のテーブルをBigQueryで用意します。
フィールド名 | タイプ | モード |
---|---|---|
UPDATED_AT | TIMESTAMP | 必須 |
JSON | PAYLOAD | 必須 |
EXTERNAL_ID | string | NULLABLE |
ALIAS_NAME | string | NULLABLE |
ALIAS_LABEL | string | NULLABLE |
BRAZE_ID | string | NULLABLE |
カラム名は上の定義と合わせる必要があります。
またユーザーを識別させるために「EXTERNAL_ID」「ALIAS_NAME&ALIAS_LABEL」「BRAZE_ID」いずれかのカラムが必要になります。
今回のテストでは以下のテーブルを用意しました。
UPDATED_AT | PAYLOAD | external_id |
---|---|---|
2023-08-15 00:00:00 UTC | {"お気に入りフード":"ラーメン","来店回数":30} | test_bq_kunisaki |
SQLでテーブルを用意したのですが、注意点としてはPAYLOADのタイプをJSON型で用意する必要があります。
BigQueryでJSON型がリリースされたのが最近なので、SQLで作成する際はそれ用の記述を書く必要があります。
SQL文は以下のように書きました。
// テーブルの作成 CREATE TABLE データセット ID.テーブル名 ( UPDATED_AT TIMESTAMP, PAYLOAD JSON, external_id STRING ); // データの挿入 INSERT INTO データセット ID.テーブル名 (UPDATED_AT, PAYLOAD, external_id) VALUES (TIMESTAMP "2023-08-15T00:00:00.000",JSON '{"お気に入りフード": "ラーメン", "来店回数": 30}', "test_bq_kunisaki");
以下記事が参考になったので、ここでも共有。
【新機能】BigQueryでJSON型が使えます!(BigQuery subscriptionsも対応)
ちなみにCSV形式のデータを入れ込むとPAYLOADの部分はStringになったので、事前にスキーマをJSON型にする必要がありそうです。
サービスアカウントの作成と4つの権限付与
IAMと管理>サービスアカウントからサービスアカウントの作成をします。
サービスアカウントの作成の際に以下4つのロールを付与します。
- BigQuery Connection User
- BigQuery User
- BigQuery Data Viewer
- BigQuery Job User
アカウント作成をした後はアカウント画面のタブにあるキーからJSONキーの新規作成をします。
このJSONキーは後ほど使いますので、大切に保管しましょう。
BrazeのIPへのアクセスを許可する
ネットワークポリシーを設定している場合はBrazeのリージョンに対する以下IPのアクセスを許可してください。
インスタンスについてUS-01、US-02、US-03、US-04、US-05、US-06 | インスタンスについてEU-01とEU-02 |
---|---|
23.21.118.191 | 52.58.142.242 |
34.206.23.173 | 52.29.193.121 |
50.16.249.9 | 35.158.29.228 |
52.4.160.214 | 18.157.135.97 |
54.87.8.34 | 3.123.166.46 |
54.156.35.251 | 3.64.27.36 |
52.54.89.238 | 3.65.88.25 |
18.205.178.15 | 3.68.144.188 |
- | 3.70.107.88 |
Brazeでの作業
ダッシュボードにログイン後、左メニューのパートナー連携>テクノロジーパートナーをクリック。
検索窓に「big」と入れたらBigQueryが出てくるので、さらにクリック。
認証情報は任意の名前を入れて、ファイルドロップ部分にはサービスアカウントで作成したJSONファイル、プロジェクト/データセット/テーブルには今回連携させるBigQueryの各項目を入力します。
先ほどGoogle Cloudの作成したJSONファイルを使う場面です。
データ連携するデータタイプの設定、連携の頻度などの同期設定を行います。
今回連携するのはユーザー情報なので、「ユーザーの属性」を選択。
連携の頻度は1番短い間隔で15分に1回になります。
今回ここで「接続に成功しましたが、テーブルにデータがありませんでした。」となってますが、テスト接続の際はテーブルの中身を空にして行いました。
テーブルの中身がある状態だと、どうやってもPAYLOADをstring判定されて連携がうまくいかなかったためです。
そのため、テーブルの中身を空にしてテスト接続を行い、その後同期をすると問題なくいけました。
同期が問題なく行われると、状態が「Active」で同期したレコードのカウントが表示されます。
Brazeのユーザー画面で確認
BigQueryにあったレコードのユーザー情報がBrazeに取り込まれているか確認してみます。
無事取り込みが完了してました!
今回参考にしたドキュメント
最後に今回参考にした公式ドキュメントをお伝えします。
今回はBigQueryでしたが、SnowflakeからBrazeの連携についても以下記事で紹介してます。